#include <stdio.h>
#include <errno.h>
#include <string.h>
#include <unistd.h>

#define NAME "test.txt"

// 从文件中读
int main() {
    FILE *fp = fopen(NAME, "r");
    if (NULL == fp) {
        perror("fopen");
        return errno;
    }

    char buffer[1024] = { '\0' };
    // 将文件中的所有内容读出来，直到文件结束
    // 能不能一次读完？ 
    // fscanf(fp, "%s", buffer); // 遇到空格结束
    // fgets遇到换行会结束 这两个函数都会在末尾自动添加'\0'
    
    // 读方法1: 直接读
    // fread(buffer, sizeof(buffer), 1, fp); // fread不会自动往字符串中添加'\0'
   
    // 方法二: 用循环读完
    int cnt = 0;
    char ch = 0;
    while ((ch = fgetc(fp)) != EOF) {
        buffer[cnt++] = ch;
    }
    
    printf("%d\n", strlen(buffer));
    fwrite(buffer, strlen(buffer), 1, stdout);
    return 0;
}




// 向文件中写

// int main()
// {
//     // FILE *fp = fopen(NAME, "w");    
//     FILE *fp = fopen(NAME, "a");
//     
//     if (NULL == fp) {
//         perror("fopen");
//         return errno;
//     }
// 
//     char *msg = "hello basic_IO\n";
//     int cnt = 5;
//     while (cnt--) {
//         // fwrite(msg, strlen(msg), 1, fp);
//         // fprintf(fp, "%s", msg); // 使用fprintf 给文件中写入字符串时，不会写入字符'\0'
//         fputs(msg, fp);
//     }
//     fclose(fp); // 当文件的所有文件指针关闭时，会刷新该文件的缓冲区
// 
//     return 0;
// }
